package main;

import logica.Dividir;
import logica.Factorial;
import logica.*;
import logica.Resta;
import logica.Seno;
import logica.Tangente;
import logica.Coseno;



public class Calculadora {
	private double num1;
	private double num2; 
	
	private Factorial factorial;
	private Potencia potencia;
	
	public Calculadora() {
		factorial = new Factorial();
		potencia=new Potencia();
	}

	
	public double darFactorial (int numero){
		
		return factorial.darFactorial(numero);
	}
	
	/**
	 * instancia de la clase resta
	 * @return el resultado d la resta
	 */
	public double resta(){
		Resta resta= new Resta(num1, num2);
		return resta.restando();
	}
	
	public double calcularTangente()
	{
		Tangente tangente = new Tangente(num1);
		return tangente.calcularTangente();
	}

	public double seno(){
		   
		Seno s= new Seno(num1);
		return s.calcularSeno();
		
	}
	
	// Recibe un valor double para calcular el coseno del mismo, este resultado es del tipo
	// double.
	// Realizado por ccaro
	public double coseno() 
	{
		return new Coseno(num1).calCoseno();
	}
	
	/**
	 * Metodo Dividir 
	 * @return
	 */
	public double dividir(){
		Dividir dv = new Dividir(num1, num2);
		return dv.Division();
	}
	
	/**
	 *	metodo de multiplicacion
	 * @return
	 */
		public double multiplicar(){
			

			return num1*num2;
		}
		
		 /**
	     * metodo para retornar la raiz 
	     * cuadrada de un numero
	     */
		public double raiz_Cuadrada(){
	    	Raiz_Cuadrada raiz=new Raiz_Cuadrada();
	    	return raiz.raiz_cuadrada(num1);
	    	
	    }
		
	//NUEVO
		/**
		 * 
		 * instancia sumador de la clase Sumador
		 * 
		 */

		public double sumar(){
			Sumador sumador=new Sumador();
			return sumador.Sumar(num1,num2);
		}


		public double getNum1() {
			return num1;
		}


		public void setNum1(double num1) {
			this.num1 = num1;
		}


		public double getNum2() {
			return num2;
		}


		public void setNum2(double num2) {
			this.num2 = num2;
		}
		
		/**
		 *Metodo de potencia cuadrada
		 */
		
		public double calcularPotencia(double numero){
			return potencia.calcularPotencia(numero);
		}

}
